package cn.xzqwjw.taskmanager.domain.vo;

import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 从项目配置文件中读取上传文件存储目录
 * prefix ="custom-option" 就是告诉SpringBoot
 * 我要取application.properties 里面以 custom-option 前缀开头的配置项进行映射
 * 它的前缀就是 custom-option，会把 upload-root-dir 映射到类中的 uploadRootDir 属性上
 * prefix 表达式中可以使用 .(点) 来表示yml中的层级
 * 不需要在整个项目的启动类上添加@EnableConfigurationProperties({CustomSystemOptionDto.class}) 注解
 *
 * @author rush
 */
@Component
@ConfigurationProperties(prefix = "custom-option")
public class CustomOptionVo {

  /**
   * 本地上传目录根目录的物理绝对地址
   */
  @Getter
  public static String ulRootDir;

  @Value("${custom-option.upload-root-dir}")
  public void setUlRootDir(String ulRootDir) {
    CustomOptionVo.ulRootDir = ulRootDir;
  }

  /**
   * 本地上传临时目录根目录的物理绝对地址
   */
  @Getter
  public static String ulRootDirTemp;

  @Value("${custom-option.upload-root-dir-temp}")
  public void setUlRootDirTemp(String ulRootDirTemp) {
    CustomOptionVo.ulRootDirTemp = ulRootDirTemp;
  }

  /**
   * 是否同时保存在本地服务器的标识，如果是false，则只保存到七牛云
   */
  public static Boolean flagSaveLocal;

  @Value("${custom-option.flag-save-local}")
  public void setFlagSaveLocal(Boolean flagSaveLocal) {
    CustomOptionVo.flagSaveLocal = flagSaveLocal;
  }

  public static Boolean getFlagSaveLocal() {
    return flagSaveLocal;
  }

  /**
   * 类别的默认标签
   */
  public static String categoryTag;

  @Value("${custom-option.category-tag}")
  public void setCategoryTag(String categoryTag) {
    CustomOptionVo.categoryTag = categoryTag;
  }

  public static String getCategoryTag() {
    return categoryTag;
  }

}
